<?php
    // THIS FILE WRITTEN IN UTF-8, Japanese.
    
    /**
     * マルチバイト対応 mb_trim
     * 
     * @version      
     * @author       
     * @copyright    
     */
    
    if(! function_exists('mb_trim')) {
        /**
         * マルチバイト対応 mb_trim
         * 
         * @param    mixed    $string     トリム対象
         * @param    mixed    $charlist   削除文字列
         * @param    boolean  $ltrim      対象文字列左をトリム
         * @param    boolean  $rtrim      対象文字列右をトリム
         *
         * @return    mixed    トリム後のデータを返す
         *
         * @note    この関数は配列に対応(search, replace, subject)しています。
         */
        function mb_trim($string, $charlist='\\\\s', $ltrim=true, $rtrim=true)
        {
            $both_ends = $ltrim && $rtrim;
            
            $char_class_inner = preg_replace(
                array( '/[\^\-\]\\\]/S', '/\\\{4}/S' ),
                array( '\\\\\\0', '\\' ),
                $charlist
            );
            
            $work_horse = '[' . $char_class_inner . ']+';
            $ltrim && $left_pattern = '^' . $work_horse;
            $rtrim && $right_pattern = $work_horse . '$';
            
            if($both_ends)
            {
                $pattern_middle = $left_pattern . '|' . $right_pattern;
            }
            elseif($ltrim)
            {
                $pattern_middle = $left_pattern;
            }
            else
            {
                $pattern_middle = $right_pattern;
            }
            
            return preg_replace("/$pattern_middle/usSD", '', $string);
        }
    }
?>